fix bug in gpx reader when processing unrecognized elements. Any existing prefix...
authortsteven4 <tsteven4@gmail.com>
Sun, 6 Dec 2015 22:39:52 +0000 (15:39 -0700)
committertsteven4 <tsteven4@gmail.com>
Sun, 6 Dec 2015 22:39:52 +0000 (15:39 -0700)
gpx.cc
reference/unknowntag.gpx [new file with mode: 0644]
reference/unknowntag~gpx.gpx [new file with mode: 0644]
testo.d/gpx.test

diff --git a/gpx.cc b/gpx.cc
index 7e2560d1c5dd585ee8111ee4820b337005684eba..f08dafb74eef2d9a41b4d3cab8122458e2ae8f20 100644 (file)
--- a/gpx.cc
+++ b/gpx.cc
@@ -549,7 +549,7 @@ start_something_else(const QString el, const QXmlStreamAttributes& attr)
   new_tag->attributes = (char**)xcalloc(sizeof(char*),2*(attr_count+ns_count)+1);
   avcp = new_tag->attributes;
   for (int i = 0; i < attr_count; i++)  {
-    *avcp = xstrdup(attr[i].name().toString());
+    *avcp = xstrdup(attr[i].qualifiedName().toString());
     avcp++;
     *avcp = xstrdup(attr[i].value().toString());
     avcp++;
diff --git a/reference/unknowntag.gpx b/reference/unknowntag.gpx
new file mode 100644 (file)
index 0000000..38c835f
--- /dev/null
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<gpx xmlns="http://www.topografix.com/GPX/1/1" creator="MapSource 6.12.2" version="1.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.topografix.com/GPX/1/1 http://www.topografix.com/GPX/1/1/gpx.xsd">
+  <rte>
+    <name>B02222</name>
+    <extensions>
+      <gpxx:RouteExtension xmlns:gpxx="http://www.garmin.com/xmlschemas/GpxExtensions/v3" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.garmin.com/xmlschemas/GpxExtensions/v3 http://www.garmin.com/xmlschemas/GpxExtensions/v3/GpxExtensionsv3.xsd">
+        <gpxx:IsAutoNamed>false</gpxx:IsAutoNamed>
+      </gpxx:RouteExtension>
+    </extensions>
+    <rtept lat="47.6" lon="-112.0">
+      <name>A01111</name>
+      <desc>A St/B St</desc>
+      <sym>Waypoint</sym>
+      <extensions>
+        <gpxx:RoutePointExtension xmlns:gpxx="http://www.garmin.com/xmlschemas/GpxExtensions/v3" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.garmin.com/xmlschemas/GpxExtensions/v3 http://www.garmin.com/xmlschemas/GpxExtensions/v3/GpxExtensionsv3.xsd">
+          <gpxx:Subclass>000000000000ffffffffffffffffffffffff</gpxx:Subclass>
+        </gpxx:RoutePointExtension>
+      </extensions>
+    </rtept>
+  </rte>
+</gpx>
diff --git a/reference/unknowntag~gpx.gpx b/reference/unknowntag~gpx.gpx
new file mode 100644 (file)
index 0000000..25920f4
--- /dev/null
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<gpx version="1.1" creator="GPSBabel - http://www.gpsbabel.org" xmlns="http://www.topografix.com/GPX/1/1">
+  <metadata>
+    <time>1970-01-01T00:00:00Z</time>
+    <bounds minlat="47.600000000" minlon="-112.000000000" maxlat="47.600000000" maxlon="-112.000000000"/>
+  </metadata>
+  <rte>
+    <name>B02222</name>
+    <extensions>
+      <gpxx:RouteExtension xsi:schemaLocation="http://www.garmin.com/xmlschemas/GpxExtensions/v3 http://www.garmin.com/xmlschemas/GpxExtensions/v3/GpxExtensionsv3.xsd" xmlns:gpxx="http://www.garmin.com/xmlschemas/GpxExtensions/v3" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+        <gpxx:IsAutoNamed>false</gpxx:IsAutoNamed>
+      </gpxx:RouteExtension>
+    </extensions>
+    <rtept lat="47.600000000" lon="-112.000000000">
+      <name>A01111</name>
+      <desc>A St/B St</desc>
+      <sym>Waypoint</sym>
+      <extensions>
+        <gpxx:RoutePointExtension xsi:schemaLocation="http://www.garmin.com/xmlschemas/GpxExtensions/v3 http://www.garmin.com/xmlschemas/GpxExtensions/v3/GpxExtensionsv3.xsd" xmlns:gpxx="http://www.garmin.com/xmlschemas/GpxExtensions/v3" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+          <gpxx:Subclass>000000000000ffffffffffffffffffffffff</gpxx:Subclass>
+        </gpxx:RoutePointExtension>
+      </extensions>
+    </rtept>
+  </rte>
+</gpx>
index c9174de7f00639a593c9e337ee8a61741296cd7f..70e7c327ed6b6ed89732eae6a512379886ec3ca2 100644 (file)
@@ -35,3 +35,8 @@ compare ${REFERENCE}/basecamp~gpx.gpx ${TMPDIR}/basecamp~gpx_so.gpx
 rm -f ${TMPDIR}/basecamp~gpx_si.gpx
 gpsbabel -i gpx -f - -o gpx -F ${TMPDIR}/basecamp~gpx_si.gpx 0< ${REFERENCE}/basecamp.gpx
 compare ${REFERENCE}/basecamp~gpx.gpx ${TMPDIR}/basecamp~gpx_si.gpx 
+
+# test unknown tags
+rm -f ${TMPDIR}/unknowntag.gpx
+gpsbabel -i gpx -f ${REFERENCE}/unknowntag.gpx -o gpx -F ${TMPDIR}/unknowntag.gpx
+compare ${REFERENCE}/unknowntag~gpx.gpx ${TMPDIR}/unknowntag.gpx